home *** CD-ROM | disk | FTP | other *** search
/ Loadstar Extras 3 / Ex3side3.d64 / letter source < prev    next >
Text File  |  2022-08-28  |  31KB  |  2,930 lines

  1. open =$ffc0
  2. readst =$ffb7
  3. setlfs =$ffba
  4. setnam =$ffbd
  5. setmsg =$ff90
  6. load =$ffd5
  7. getin =$ffe4
  8. input'buffer =512
  9. clrchn =$ffcc
  10. close =$ffc3
  11. chkout =$ffc9
  12. chkin =$ffc6
  13. plot =$fff0
  14. chrout =$ffd2
  15. strout = $ab1e
  16. crsr'down =17
  17. rvs'on =18
  18. home =19
  19. del =20
  20. crsr'right =29
  21. green =30
  22. blue =31
  23. lowercase =14
  24. uppercase =142
  25. rvs'off =146
  26. clr =147
  27. insert =148
  28. brown =149
  29. light'red =150
  30. dark'grey =151
  31. medium'grey =152
  32. light'green =153
  33. top'left =176
  34. top'right =174
  35. bottom'left =173
  36. bottom'right =189
  37.  
  38. forms'loc =$3300
  39. mail'merge'start =$a000
  40. ;dvo 10
  41. .org $0801
  42. .obj "@0:lettermeister"
  43.  
  44. .byt $0b,$08,$c7,$07,$9e,$32,$30,$36,$31,$00,$00,$00
  45.  
  46. setup lda #0
  47. sta 53280
  48. sta 53281
  49. sta word'index
  50. sta forms'loc
  51. lda #255
  52. sta cats'found
  53. lda #26
  54. sta 53272
  55. lda #0
  56. sta 212
  57. lda #8
  58. jsr chrout
  59. lda #11
  60. sta 649
  61.  
  62. lda #clr
  63. jsr chrout
  64.  
  65. ldx <ban'top
  66. ldy >ban'top
  67. jsr copy'parms
  68. jsr fill'box
  69. ldx <ban'middle
  70. ldy >ban'middle
  71. jsr copy'parms
  72. jsr fill'box
  73. ldx <ban'bottom
  74. ldy >ban'bottom
  75. jsr copy'parms
  76. jsr fill'box
  77.  
  78. ldy #8
  79. ldx #1
  80. clc
  81. jsr plot
  82. jsr r'patch
  83. lda #3
  84. sta 646
  85.  
  86. inc 199
  87.  
  88. lda <ban'text
  89. ldy >ban'text
  90. jsr strout
  91.  
  92. ldx #4
  93. ldy #0
  94. lda #14
  95. jsr print'framed'box
  96.  
  97. ldx #21
  98. ldy #0
  99. lda #0
  100. jsr print'framed'box
  101.  
  102. load'default lda #0
  103. jsr setmsg
  104. lda #2
  105. ldx 186
  106. cpx #8
  107. bcs +
  108. ldx #8
  109. + stx device
  110. ldy #0
  111. jsr setlfs
  112. lda #6
  113. ldx <filename
  114. ldy >filename
  115. jsr setnam
  116. load'file ldx <loading'msg
  117. ldy >loading'msg
  118. lda #23
  119. jsr show
  120.  
  121. lda #0
  122. ldx <forms'loc
  123. ldy >forms'loc
  124. inx
  125. jsr load
  126. ldy #0
  127. tya
  128. sta (174),y
  129. ldx #3
  130. jsr screen'stash
  131. jsr open'error
  132. jsr read'error
  133.  
  134. get'return ldx <getting'ret'mess
  135. ldy >getting'ret'mess
  136. lda #22
  137. jsr show
  138.  
  139. lda #8
  140. ldx <return'name+3
  141. ldy >return'name+3
  142. jsr setnam
  143. lda #2
  144. ldx device
  145. ldy #2
  146. jsr setlfs
  147. jsr open
  148. ldx #2
  149. jsr chkin
  150.  
  151. lda return'address
  152. sta 253
  153. lda return'address+1
  154. sta 254
  155.  
  156. ldy #0
  157.  
  158. - jsr getin
  159. sta (253),y
  160. iny
  161. bne -
  162.  
  163. jsr clrchn
  164. lda #2
  165. jsr close
  166.  
  167. jsr open'error
  168. jsr read'error
  169.  
  170. ldx #21
  171. ldy #0
  172. lda #0
  173. jsr print'framed'box
  174.  
  175. jsr find'categories
  176.  
  177. ldx #0
  178. jsr screen'stash
  179.  
  180. setup'menu ldx <categories'shadow
  181. ldy >categories'shadow
  182. jsr copy'parms
  183. jsr fill'box
  184.  
  185. ldx <categories'parms
  186. ldy >categories'parms
  187. jsr copy'parms
  188. jsr fill'box
  189.  
  190. ldx categories'parms+2
  191. inx
  192. ldy categories'parms
  193. iny
  194. clc
  195. jsr plot
  196. jsr r'patch
  197.  
  198. ldx #0
  199. stx 254
  200.  
  201. - lda 254
  202. asl
  203. tax
  204. lda categories,x
  205. sta 251
  206. lda categories+1,x
  207. sta 252
  208.  
  209. lda #13
  210. sta 646
  211. lda #1
  212. sta 199
  213.  
  214. ldy #0
  215. - lda (251),y
  216. jsr chrout
  217. cmp #13
  218. beq +
  219. iny
  220. bne -
  221.  
  222. + lda #9
  223. sta 211
  224. jsr 58732
  225. jsr r'patch
  226.  
  227. inc 254
  228. lda 254
  229. cmp cats'found
  230. bne --
  231.  
  232. ldx <select'prompt
  233. ldy >select'prompt
  234. lda #21
  235. jsr show
  236.  
  237. lda #8
  238. sta menux1
  239. lda #32
  240. sta menux2
  241. lda categories'parms+2
  242. clc
  243. adc #1
  244. sta menuy
  245. lda cats'found
  246. sta menu'items
  247. lda #13
  248. sta menu'text
  249. lda #1
  250. sta menu'highlight
  251.  
  252. jsr menu
  253.  
  254. lda menu'items
  255. sec
  256. sbc #3
  257. cmp menu'current
  258. bne +
  259. jsr set'return
  260. ldx #3
  261. jsr screen'restore
  262. jmp setup'menu
  263.  
  264. + clc
  265. adc #1
  266. cmp menu'current
  267. bne +
  268. jmp load'new
  269.  
  270. + lda menu'current
  271. tay
  272. iny
  273. cpy menu'items
  274. beq quit'sure
  275.  
  276. sta current'letter
  277.  
  278. clear'ram lda #0
  279. sta 251
  280. lda #$f0
  281. sta 252
  282. lda #0
  283. ldy #0
  284. - sta (251),y
  285. inc 251
  286. bne -
  287. inc 252
  288. ldx 252
  289. cpx #$fd
  290. bcc -
  291.  
  292. jmp get'letter
  293.  
  294. quit'sure lda #19
  295. ldx <sure'text
  296. ldy >sure'text
  297. jsr show
  298.  
  299. - jsr getin
  300. beq -
  301.  
  302. cmp "y"
  303. bne +
  304. jmp quit'loadstar
  305.  
  306. + cmp "n"
  307. bne -
  308.  
  309. jmp setup'menu
  310.  
  311. get'letter lda current'letter
  312. asl
  313. tax
  314. lda categories,x
  315. sta 247
  316. lda categories+1,x
  317. sta 248
  318.  
  319. find'letter'start ldy #0
  320. sty word'index
  321. sty bottom'of'letter
  322. sty bottom'of'letter+1
  323. lda edit'menu
  324. sta 249
  325. lda edit'menu+1
  326. sta 250
  327. - lda (247),y
  328. sta (249),y
  329. cmp "\"
  330. beq +
  331.  
  332. jsr bump'page
  333. inc 249
  334. bne -
  335. inc 250
  336. bne -
  337.  
  338. + lda 247
  339. sta top'of'letter
  340. lda 248
  341. sta top'of'letter+1
  342.  
  343. print'page jsr clear'window
  344. lda #0
  345. sta word'index
  346. print'page'2 ldx #5
  347. ldy #1
  348. sty reverse'flag
  349. clc
  350. jsr plot
  351. jsr r'patch
  352. lda #154
  353. jsr chrout
  354.  
  355. ldy #0
  356.  
  357. page'loop ldy #0
  358. lda 248
  359. cmp #$f0
  360. bcc +
  361. jmp blank'loop
  362.  
  363. + lda (247),y
  364. bne +
  365. lda 247
  366. sta bottom'of'letter
  367. lda 248
  368. sta bottom'of'letter+1
  369. jmp scan'wait
  370. + cmp "@"
  371. beq found'letter'bottom
  372. ldx #1
  373. stx 199
  374. cmp "\"
  375. bne +
  376. jmp fill'blank
  377. + jsr word'wrap
  378. + ldy #0
  379. ldx 214
  380. cpx #20
  381. bcs page'finished
  382. jsr bump'page
  383. jmp page'loop
  384. woah jmp get'letter
  385.  
  386. found'letter'bottom lda 247
  387. sta bottom'of'letter
  388. lda 248
  389. sta bottom'of'letter+1
  390. lda #29
  391. ldx <next'letter'msg
  392. ldy >next'letter'msg
  393. jsr show
  394. jmp scan'wait
  395.  
  396. bump'page inc 247
  397. bne +
  398. inc 248
  399. + rts
  400.  
  401. page'finished lda 211
  402. cmp #1
  403. beq +
  404. jsr print'word
  405. + jsr bump'page
  406. lda #29
  407. ldx <next'letter'msg
  408. ldy >next'letter'msg
  409. jsr show
  410.  
  411. scan'wait jsr getin
  412. beq scan'wait
  413.  
  414. cmp #crsr'down
  415.  
  416. bne +
  417.  
  418. lda bottom'of'letter+1
  419. bne back'to'letter
  420. jsr clear'window
  421. jmp print'page'2
  422.  
  423. + cmp "m"
  424. bne +
  425. jsr zero'stash
  426. ldx #1
  427. jsr screen'stash
  428. lda #255
  429. sta space'on
  430. sta menu'current
  431. jsr prompts'menu
  432. ldx #1
  433. jsr screen'restore
  434. lda #154
  435. jsr chrout
  436. jsr zero'restore
  437. lda space'on
  438. cmp " "
  439. beq back'to'letter
  440. jmp setup'menu
  441.  
  442. back'to'letter jsr zero'restore
  443. lda top'of'letter
  444. sta 247
  445. lda top'of'letter+1
  446. sta 248
  447. jsr clear'window
  448. ldy #0
  449. sty bottom'of'letter
  450. sty bottom'of'letter+1
  451. jmp print'page
  452.  
  453. + cmp " "
  454. bne scan'wait
  455.  
  456. jsr search'forward
  457. bvc +
  458. jmp get'letter
  459. + bmi +
  460. jmp get'letter
  461. + jmp find'letter'start
  462.  
  463. lda bottom'of'letter+1
  464. beq scan'wait
  465. jsr bump'page
  466. lda #0
  467. sta bottom'of'letter+1
  468. jmp find'letter'start
  469.  
  470. + jsr word'wrap
  471. lda word'index
  472. bne +
  473. jsr bump'page
  474. jmp -
  475. + jmp bump'page
  476.  
  477. exit ldx #0
  478. jsr screen'restore
  479.  
  480. quit'loadstar ldy #80
  481. lda #0
  482. - sta input'buffer,y
  483. dey
  484. bpl -
  485. jmp quit
  486.  
  487. fill'box jsr linx
  488. lda 214
  489. pha
  490. lda 211
  491. pha
  492. box'start ldx box'parameters+2
  493. ldy #0
  494. clc
  495. jsr $fff0
  496. jsr r'patch
  497. dec box'parameters
  498. inc box'parameters+3
  499.  
  500. - ldy box'parameters+1
  501. - lda box'parameters+4
  502. cmp #255
  503. beq +
  504. sta (209),y
  505. + lda box'parameters+5
  506. sta (243),y
  507. dey
  508. cpy box'parameters
  509. bne -
  510. lda 214
  511. cmp box'parameters+3
  512. beq +
  513.  
  514. inc 214
  515. jsr 58732
  516. jsr r'patch
  517. jmp --
  518. + lda #home
  519. jsr $ffd2
  520. pla
  521. sta 211
  522. pla
  523. sta 214
  524. jmp 58732
  525.  
  526. copy'parms stx 251
  527. sty 252
  528. ldy #5
  529. - lda (251),y
  530. sta box'parameters,y
  531. dey
  532. bpl -
  533. rts
  534.  
  535. print'framed'box sta number'of'lines
  536. clc
  537. jsr plot
  538. jsr r'patch
  539.  
  540. lda <box'top
  541. ldy >box'top
  542. jsr strout
  543.  
  544. lda number'of'lines
  545. - pha
  546. lda <box'middle
  547. ldy >box'middle
  548. jsr strout
  549. pla
  550. tay
  551. dey
  552. tya
  553. bpl -
  554.  
  555. lda <box'bottom
  556. ldy >box'bottom
  557. jsr strout
  558. jmp linx
  559.  
  560. linx ldy #24
  561. - lda 217,y
  562. ora #128
  563. sta 217,y
  564. dey
  565. bpl -
  566. rts
  567.  
  568. screen'stash txa
  569. and #3
  570. tax
  571. lda screens,x
  572. sta 252
  573. clc
  574. adc #4
  575. sta 254
  576. lda #0
  577. sta 253
  578. sta 251
  579.  
  580. lda #home
  581. jsr chrout
  582. jsr r'patch
  583. sei
  584. lda #0
  585. sta 1
  586.  
  587. ldx #3
  588. ldy #0
  589. - lda (209),y
  590. sta (251),y
  591. dec 1
  592. lda (243),y
  593. inc 1
  594. sta (253),y
  595. iny
  596. bne -
  597. inc 210
  598. inc 252
  599. inc 244
  600. inc 254
  601. dex
  602. bpl -
  603. lda #$77
  604. sta 1
  605. cli
  606. lda #home
  607. jmp chrout
  608.  
  609. screen'restore txa
  610. and #3
  611. tax
  612. lda screens,x
  613. sta 252
  614. clc
  615. adc #4
  616. sta 254
  617. lda #0
  618. sta 253
  619. sta 251
  620.  
  621. lda #home
  622. jsr chrout
  623. jsr r'patch
  624. sei
  625. lda #0
  626. sta 1
  627.  
  628. ldx #3
  629. ldy #0
  630.  
  631. - lda (251),y
  632. sta (209),y
  633. lda (253),y
  634. dec 1
  635. sta (243),y
  636. inc 1
  637. iny
  638. bne -
  639. inc 210
  640. inc 252
  641. inc 244
  642. inc 254
  643. dex
  644. bpl -
  645. lda #$77
  646. sta 1
  647. cli
  648. lda #home
  649. jmp chrout
  650.  
  651. find'categories lda <forms'loc
  652. sta 251
  653. lda >forms'loc
  654. sta 252
  655. inc 251
  656.  
  657. ldy #0
  658. sty cats'found
  659.  
  660. search'plus lda (251),y
  661. beq end'of'data
  662. cmp "{SHIFT-+}"
  663. beq found'category
  664.  
  665. bump'search'plus inc 251
  666. bne +
  667. inc 252
  668. + jmp search'plus
  669.  
  670. found'category lda cats'found
  671. asl
  672. tax
  673. lda 251
  674. sta categories,x
  675. lda 252
  676. sta categories+1,x
  677. inc categories,x
  678. bne +
  679. inc categories+1,x
  680. + inc cats'found
  681. jmp bump'search'plus
  682.  
  683. end'of'data lda cats'found
  684. asl
  685. tax
  686. lda <return'text
  687. sta categories,x
  688. lda >return'text
  689. sta categories+1,x
  690. inc cats'found
  691. lda cats'found
  692. asl
  693. tax
  694. lda <user'file'text
  695. sta categories,x
  696. lda >user'file'text
  697. sta categories+1,x
  698. inc cats'found
  699. lda cats'found
  700. asl
  701. tax
  702. lda <quit'text
  703. sta categories,x
  704. lda >quit'text
  705. sta categories+1,x
  706. inc cats'found
  707. rts
  708.  
  709.  
  710. menu jsr linx
  711. ldx menuy
  712. ldy #0
  713. sty menu'current
  714. clc
  715. jsr plot
  716. jsr r'patch
  717.  
  718. ldy menux1
  719. lda menu'highlight
  720. - sta (243),y
  721. iny
  722. cpy menux2
  723. beq -
  724. bcc -
  725.  
  726. menu'wait jsr getin
  727. beq menu'wait
  728.  
  729. ldx menu'current
  730. stx temp
  731.  
  732. cmp #crsr'down
  733. beq menu'down
  734.  
  735. cmp #145
  736. beq menu'up
  737.  
  738. cmp #13
  739. beq menu'select
  740.  
  741. bit space'on
  742. bpl menu'wait'loop
  743. cmp " "
  744. beq menu'select
  745.  
  746. menu'wait'loop jmp menu'wait
  747.  
  748. menu'down inc menu'current
  749. lda menu'current
  750. cmp menu'items
  751. bne highlight
  752. lda #0
  753. sta menu'current
  754. jmp highlight
  755.  
  756. menu'up dec menu'current
  757. lda menu'current
  758. cmp #255
  759. beq +
  760. jmp highlight
  761.  
  762. + ldy menu'items
  763. dey
  764. sty menu'current
  765. jmp highlight
  766.  
  767. menu'select sta space'on
  768. rts
  769.  
  770. highlight lda menuy
  771. clc
  772. adc menu'current
  773. tax
  774. ldy #0
  775. clc
  776. jsr plot
  777. jsr r'patch
  778. lda menu'highlight
  779. sta mcolor
  780. jsr paint'line
  781.  
  782. lda